![textlintで表記ゆれチェックルール集を一部無視する設定](https://devio2023-media.developers.io/wp-content/uploads/2022/05/textlint-1200x630-1.png)
textlintで表記ゆれチェックルール集を一部無視する設定
どうも。 えーたん(@eetann092)です。
文章校正ツールtextlintでは、 textlint-rule-prhを使って表記ゆれチェックができます。
具体的には、
「コンピューター
はコンピュータ
、
するようになります
はします
の方が良いのでは?」
と表記ゆれや言い回しの改善案を提案できます。
以下はNeovimでの表示の例です。
本記事では、textlint-rule-prhで表記ゆれチェックのルールファイルをimportした場合に、 一部のルールを無視する方法について紹介します。
すでにtextlint-rule-prhを導入している人向けの記事です。
設定例
無視前の設定
.textlintrc
のrulesに、
textlint-rule-prhの設定ファイルのパスとして今回はprh.yaml
を指定します。
{ "rules": { "prh": { "rulePaths" :["./prh.yaml"] } } }
例として、prhの表記ゆれのルールファイル prh/rulesのWEB+DB_PRESS.yml に定義されている以下の3つを無視します。
期待する正規表現 | 表記ゆれの正規表現 | 提案例 |
---|---|---|
まったく | 全く | 全く → まったく |
$1ほか$2 | /([^排人])他([^ァ-ヶ社者人方])/ | の他の → のほかの |
$1な$2 | /([^有])無([かくいけし])/ | が無い → がない |
ひらがなを提案される部分を漢字で書きたい場合を想定しました。
表記ゆれのルールファイル(今回はWEB+DB_PRESS.yml
)では、「期待する正規表現」がexpected
、「表記ゆれの正規表現」がpattern
にあたります。
以下が無視の設定をしていないprh.yaml
例です。
version: 1 imports: - path: ./node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml disableImports: true
無視設定を書く
imports
でインポートするルールの中から無視したいものは、ignoreRules
で指定します。
指定方法は2種類あり、無視したいルールのexpected
かpattern
を書きます。
ここで1つ注意です。
表記ゆれのルールファイル(今回はWEB+DB_PRESS.yml
)で書かれたexpected
やpattern
を
そのまま書けば良いわけではありません。
prhの実装や prh/prh.yml のコメントの通り、設定ファイルパース後の表現を書く必要があります。
パース後の表現はprh
コマンドに--rules-yaml
オプションをつけて見ることができます。
たとえば、WEB+DB_PRESS.yml
のルールのパース後の表現の出力のコマンドは以下です。
npx prh --rules ./node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml --rules-yaml
以下がWEB+DB_PRESS.yml
のルールのパース後の表現の出力の一部です。
rules: - expected: $1な$2 pattern: '/([^有])無([かくいけし])/gmu' options: wordBoundary: false specs: [] raw: pattern: '/([^有])無([かくいけし])/' expected: $1な$2
出力は長いため、必要に応じてless
やgrep
に渡しましょう。
元のルールの表現はraw
の中に書かれており、
「パース後の表現」はrules直下の配列の要素のexpected
とpattern
です。
上記の出力のルールを例にすると、
ignoreRules
にpatternで指定する場合は/([^有])無([かくいけし])/gmu
のように
フラグgmu
を追加する必要があります。
もちろんexpectedを使って$1な$2
を指定しても良いでしょう。
以下が無視の設定をしたprh.yaml
例です。
version: 1 imports: - path: ./node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml disableImports: true ignoreRules: - expected: まったく - expected: $1ほか$2 - pattern: /([^有])無([かくいけし])/gmu
そもそも表記ゆれだけではなくtextlint自体で特定の範囲を無視したい場合は、 以下の記事をご覧ください。
リンク集
よく開いたページのリンクをまとめておきます。
今回使用したサンプル文章や設定ファイルは以下のリポジトリにあります。